package com.ruoyi.project.digital.mapper;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.project.digital.domain.UserPet;
import com.ruoyi.project.digital.domain.vo.UserPetVo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 用户与宠物关系Mapper接口
 *
 * @author ruoyi
 * @date 2023-10-30
 */
public interface UserPetMapper extends BaseMapper<UserPet>
{
    /**
     * 查询用户与宠物关系
     *
     * @param id 用户与宠物关系ID
     * @return 用户与宠物关系
     */
    public UserPet selectUserPetById(Long id);

    /**
     * 查询用户与宠物关系列表
     *
     * @param userPet 用户与宠物关系
     * @return 用户与宠物关系集合
     */
    public List<UserPet> selectUserPetList(UserPet userPet);

    /**
     * 新增用户与宠物关系
     *
     * @param userPet 用户与宠物关系
     * @return 结果
     */
    public int insertUserPet(UserPet userPet);

    /**
     * 修改用户与宠物关系
     *
     * @param userPet 用户与宠物关系
     * @return 结果
     */
    public int updateUserPet(UserPet userPet);

    /**
     * 删除用户与宠物关系
     *
     * @param id 用户与宠物关系ID
     * @return 结果
     */
    public int deleteUserPetById(Long id);

    /**
     * 批量删除用户与宠物关系
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteUserPetByIds(Long[] ids);
    @Select("select ${ew.sqlSelect} from t_user_pet ${ew.customSqlSegment}")
    List<UserPetVo> selectFrontList(@Param("ew") Wrapper<UserPet> queryWrapper);

    @Select("SELECT\n" +
            "\tCOUNT(*)\n" +
            "FROM\n" +
            "\tt_pet_message_details t\n" +
            "LEFT JOIN t_pet_message tp ON tp.id = t.message_id\n" +
            "WHERE\n" +
            "\ttp.user_id = #{userId} and t.is_read=0")
    Integer  selectNoReadByUserId(@Param("userId") Long id);
}
